10 月時,我與同事一起參加了 CSS Conf 2016,非常多的講者都在推 Grid
這個東西。
( 我當時連聽都沒聽過,還覺得那可能是一個新的 css framwork。慚愧 =艸= )
後來查資料時,心態就從 "喔~ 好像還不錯" 變成 "OMG 這也太厲害了吧!!!!"。因此為了不久的將來著想,我決定要認真學習一下。
CSS Grid Layout Module Level 1 :: W3C
這邊的 Gird,不是指 bootstrap 或 susy 中的格線系統,而是由 W3C 於 2012 年提出的新的 layout model。在處理元素的尺寸 ( sizing ) 跟位置 ( positioning ) 上,非常非常強大!
也許大家會覺得有了 flexbox 後,gird 好像沒麼麼必要。
但這兩張圖可以看出一些端倪:
flexbox
- single-axis–oriented,無法做到 "跨列"
grid
- optimized for 2-dimensional layouts
為什麼說他強大呢?
相信大家一定有類似的經驗:切版時為了達成某些版面的需求,有時候會多寫一些 html。
但使用 Grid 的話,我們幾乎可以做到 結構與樣式分離
這件事。
( 聽起來有點拗口 Orz... 等等會用具體的例子,來解釋這句話。 )
如同前一段所說,flexbox 是 single-axis–oriented,flex items 只能照單一方向排列。
而 grid 則是二維的,我們可以在 grid container 上定義格線 ( grid line ),然後直接指定 grid items 的位置。
( 具體的寫法,預計在明天會有詳細的說明跟 DEMO )
BUT
Grid 目前的瀏覽器支援度不高 ( 甚至可以說 "非常低" ),今天的 caniuse 截圖如下,幾乎是滿江紅。
但也可以觀察到,IE 已經有部分支援、即將推出的 Firefox 52 / Chrome 57 也即將開始支援。
Jen Simmons 在 Revolutionize Your Page 的演講中提到,大約明年 1 月 chrome 就會支援了。
即使支援度有待加強,但考慮到:
因此我相信,現在就是學習 grid、使用 grid 的最好時機( ✿>◡❛)
在看 DEMO 之前,首先需要一個支援 grid 的瀏覽器。以下有幾個選項:
可以選一個來看唷~
範例來源:http://labs.jensimmons.com/ - Image Gallery Study
在 使用同樣 html 結構
的條件下,不同的 layout mode 效果如下:
大螢幕
小螢幕
難怪前不久開始有人說不要再刻 Grid System 了,因為 Grid Layout 能做到事情,比很多 css framwork、瀑布流套件都還多啊!
期待瀏覽器廣泛支援的那一天 =D